package com.njtoyo.taxi.admin.service.finance;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njtoyo.taxi.admin.mapper.secondary.entity.OrderBankBill;
import com.njtoyo.taxi.admin.rest.presenter.finance.*;
import com.njtoyo.taxi.admin.rest.wrapper.finance.FinanceIncomeBelongStatWrapper;
import com.njtoyo.taxi.admin.rest.wrapper.finance.FinanceReconciliationWrapper;
import com.njtoyo.taxi.admin.rest.wrapper.finance.FinanceStatWrapper;
import com.njtoyo.taxi.entity.backend.AdminUser;
import com.taxi.entity.common.RestResult;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface FinanceService {

    RestResult<List<FinanceAllowanceStatsPresenter>> statistics(FinanceStatWrapper wrapper);

    RestResult<List<FinanceIncomeBelongStatsPresenter>> incomeBelongStatistics(AdminUser adminUser,FinanceIncomeBelongStatWrapper wrapper);

    RestResult<FinanceCustomerAllowancePresenter> customerAllowance(FinanceReconciliationWrapper wrapper);

    RestResult<FinanceServiceFeePresenter> serviceFee(FinanceReconciliationWrapper wrapper);

    RestResult<FinanceDriverRewardPresenter> driverReward(FinanceReconciliationWrapper wrapper);

    RestResult<FinanceDriverFundsInOutPresenter> driverFundsInOut(FinanceReconciliationWrapper wrapper);

    RestResult<FinanceUndrawnBalancePresenter> driverUndrawnBalance(FinanceReconciliationWrapper wrapper);

    RestResult<FinancePaymentPlatformFeePresenter> paymentPlatformFee(FinanceReconciliationWrapper wrapper);

    RestResult<IPage<OrderBankBill>> getBankBillPage(Integer current, Integer size, String date,String result);

    RestResult comparison(String startDate, String endDate);

    // 收入统计
    FinanceIncomeTotal incomeTotal();

    void incomeBelongStatisticsExport(AdminUser adminUser, FinanceIncomeBelongStatWrapper wrapper, HttpServletResponse response);

    FinanceIncomeTotal incomeCantonTotal(AdminUser adminUser);
}
